package com.bay1ts.controller;

import com.bay1ts.domain.Course;
import com.bay1ts.domain.Request;
import com.bay1ts.domain.SubjectContest;
import com.bay1ts.service.RequestService;
import com.bay1ts.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;

/**
 * Created by chenuu on 2016/4/1.
 */
@Controller
@RequestMapping(value = "stu")
public class StudentController {
    @Autowired
    private RequestService requestService;
    @Autowired
    private StudentService studentService;
    @RequestMapping(value = "addSubjectContest",method = RequestMethod.GET)
    public String showAddSubjectContestPage(){
        return null;
    }
    @RequestMapping(value = "addSubjectContest",method = RequestMethod.POST)
    public String addSubjectContest(SubjectContest subjectContest){
        studentService.addSubjectContest(subjectContest);
        return null;
    }
    //居然又忘了怎么插入多行注释了，，，
    @RequestMapping(value = "getMySubjectContest")
    @ResponseBody
    public List<SubjectContest> getMySubjectContest(){
        return studentService.getMySubjectContest();
    }
    /*
    * shift，ctrl，/键表示多行注释
    * 这个功能是学生用来检查自己有木有通过
    * 看来又要改数据库了，数据库里加上comment
    * */
    //这是请求批准成功的
    @RequestMapping(value = "checksuccess")
    @ResponseBody
    public Map<String, List> checkSuccess(){
        //一个service很难完成任务，最好分成多次执行，第一次只能获取我的所有通过项目
        //第二次，从id中提取出来具体信息，交给前台。
        List<Request> list=studentService.getMyResult(2);
        //上面的2,表示：得到我 通过的 list
        return requestService.getApplyDetailsSortByType(list);
    }
    @RequestMapping(value = "checkpending")
    public Map<String, List> checkpending(){
        List<Request> list=studentService.getMyResult(1);
        List<Request> list2=studentService.getMyResult(0);
        //上面的1表示：得到我初审通过的 List,0表示得到未被处理的list
        list.addAll(list2);
        return requestService.getApplyDetailsSortByType(list);
    }
    @RequestMapping(value = "checkfail")
    public Map<String, List> checkfail(){
        List<Request> list=studentService.getMyResult(3);
        //上面的3表示：得到我失败的 List
        return requestService.getApplyDetailsSortByType(list);
    }
    @RequestMapping(value = "availablesocre")
    public void getMyAvailableScore(){
        studentService.getMyAvailableScore();
    }
    //下面写增加其他选项的逻辑

    @RequestMapping(value="applyreplacement",method = RequestMethod.GET)
    // 可以让学生选择，他的成果，用来申请
    public String showApplyReplacement(){
        List<Request> list=studentService.getMyResult(2);
        //list表示得到所有已经终审通过的item
        Map<String,List> map=requestService.getApplyDetailsSortByType(list);
        //可以把上面的map放在model里面，渲染页面
        //直接返回页面  填写表单
        return null;
    }

    //填写 学科竞赛、职业资格及大学生创新创业训练计划项目成果学分认定申请表的逻辑
    //此函数的参数形式不能确定，大致是一个list吧，里面存放他要申请免修的课程
    @RequestMapping(value="applyreplacement",method = RequestMethod.POST)
    @ResponseBody
    public String applyReplacement(List<Integer> courseids){
        int score=6;
        for(int i:courseids){
            //累加得到课程的学分总数。
            //需要用到课程类，需要建表
        }
        int result =studentService.useScore(score);
        return  result==1?"success":"fail";
    }
    //得到学生课程讯息。从此引入课程。课程可供applyreplacement使用
    @RequestMapping(value = "getcourseinfo")
    public List<Course> getcourseinfo(){
        List<Course> list=studentService.getMyNextCourse();
        return list;
    }


}
